package net.hands.common.coll;

import net.hands.common.ID;
import net.hands.common.JsonUtils;

/**
 * 说明:键值容器
 * <br>
 * <p>这是一个开源的软件，请在LGPLv3下合法使用、修改或重新发布。</p>
 * @author 陈侃(cknet@126.com, 13910090885)
 *         http://code.google.com/p/simpleframework/
 *         http://www.simpleframework.net
 */
public class KVMap extends AbstractKVMap<Object, KVMap> {
	/**
	 * 
	* Constructor Method  
	* @update 2012-9-26 下午5:09:16  
	* @param initialCapacity 初始容量
	 */
	public KVMap(final int initialCapacity) {
		super(initialCapacity);
	}
   /**
    * 
   * Constructor Method  
   * @update 2012-9-26 下午5:09:31
    */
	public KVMap() {
		super();
	}
	/**
    * json转键值map
   * Constructor Method  
   * @update 2012-7-16 下午3:48:50  
   * @param json
    */
	public KVMap(final String json) {
		putAll(JsonUtils.toMap(json));
	}
  /**
   * 
  (non-Javadoc)  
  * @see net.hands.common.coll.AbstractKVMap#put(java.lang.String, java.lang.Object)  
  * @update 2012-9-20 上午11:48:09
   */
	@Override
	public Object put(final String key, Object value) {
		if (value instanceof ID) {//是id 接口实现类
			value = ((ID) value).getValue();//获得值
		} else if (value instanceof AbstractKVMap) {//是抽象键值map扩展类
			value = ((AbstractKVMap<?, ?>) value).map();
		}
		return super.put(key, value);
	}

	private static final long serialVersionUID = 7340654517376280959L;
}
